package com.graduation.project.service.system;

import com.baomidou.mybatisplus.extension.service.IService;
import com.graduation.project.entity.dto.menu.SaveOrUpdateMenuDTO;
import com.graduation.project.entity.dto.menu.ListMenuDTO;
import com.graduation.project.entity.dto.UpdateStatusDTO;
import com.graduation.project.entity.po.Menu;
import com.graduation.project.utils.ResultUtil;

/**
 * @author 卑微小峰
 * @date 2022/11/05
 * 菜单管理业务接口
 */
public interface MenuManagementService extends IService<Menu> {

    /**
     * 新增菜单
     * @param input 新增/修改菜单输入类
     * @return ResultUtil
     */
    ResultUtil<?> addMenu(SaveOrUpdateMenuDTO input);

    /**
     * 修改菜单
     * @param input 新增/修改菜单输入类
     * @return ResultUtil
     */
    ResultUtil<?> updateMenu(SaveOrUpdateMenuDTO input);

    /**
     * 根据id修改状态
     * @param input 修改状态输入类
     * @return ResultUtil
     */
    ResultUtil<?> updateMenuStatusById(UpdateStatusDTO input);

    /**
     * 菜单列表
     * @param input 查询菜单列表输入类
     * @return ResultUtil
     */
    ResultUtil<?> listMenuByCondition(ListMenuDTO input);

    /**
     *
     * 删除菜单及其子项
     * @param id 选中id
     * @return
     */
    ResultUtil<?> deleteMenu(Long id);

    /**
     * 获取弹窗父级菜单下拉数据
     * @return ResultUtil
     */
    ResultUtil<?> listParentMenu();
}
